/*----------------------------------------------------------------------------*/
/* Copyright (c) FIRST 2008. All Rights Reserved.							  */
/* Open Source Software - may be modified and shared by FRC teams. The code   */
/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
/*----------------------------------------------------------------------------*/
#ifndef INTERRUPTABLE_SENSORBASE_H_
#define INTERRUPTABLE_SENSORBASE_H_

#include "ChipObject.h"
#include "SensorBase.h"
#include <stdio.h>

class InterruptableSensorBase : public SensorBase
{
public:
	InterruptableSensorBase(void);
	virtual ~InterruptableSensorBase(void);
	virtual void RequestInterrupts(tInterruptHandler handler) = 0; ///< Asynchronus handler version.
	virtual void RequestInterrupts(void) = 0;		///< Synchronus Wait version.
	virtual void CancelInterrupts(void);			///< Free up the underlying chipobject functions.
	virtual void WaitForInterrupt(int msTimeout); ///< Synchronus version.
	virtual void EnableInterrupts(void);			///< Enable interrupts - after finishing setup.
	virtual void DisableInterrupts(void);		///< Disable, but don't deallocate.
protected:
	tInterrupt *m_interrupt;
	tInterruptManager *m_manager;
	unsigned m_interruptIndex;
	void AllocateInterrupts(bool watcher);
};

#endif

